using System;
using System.Collections.Generic;
using System.Text;
using Sedodream.Sudoku.Events;

namespace Sedodream.Sudoku.Board
{
	/// <summary>
	/// The object that holds all the Sudoku data.
	/// </summary>
	public interface IBoardData : ICloneable
	{
		event BoardDataChanged BoardChanged;
		/// <summary>
		/// Length of a side.
		/// This is the Math.Sqrt(Size).
		/// </summary>
		int SideLength
		{
			get;
		}

		int Size
		{
			get;
		}
		int?[,] Data
		{
			get;
		}
		int? this[int row, int col]
		{
			get;
			set;
		}
		void SetValueAt(int row, int col, int? value);
	}
}
